package data;

public class Afd {

	public final int INICIO_COMENTARIO = 17;
	public final int FIN_COMENTARIO = 19;
	
	final private int tabla[][] = {

			/*0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19*/

	/*0*/	{ 1, 1,-1, 1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// l -> letra

	/*1*/	{ 2, 1, 2, 1, 5, 5, 8, 8, 8,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// d -> digito
 
	/*2*/	{ 1, 1,-1, 1,-1, 6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// e -> eE

	/*3*/	{-1, 3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// _

	/*4*/	{ 4,-1, 4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// .

	/*5*/	{10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// ( )  , ; :

	/*6*/	{ 9,-1,-1,-1,-1,-1, 7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// +
			
	/*7*/	{15,-1,-1,-1,-1,-1, 7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// -

	/*8*/	{11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1}, 	// > <

	/*9*/	{12,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,13,13,-1,-1,-1,-1,17,17,-1}, 	// =

	/*10*/	{11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,19,-1}, 	// /
			
	/*11*/	{10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,-1,-1,-1,-1,-1,18,18,-1}, 	// *
			
	/*12*/	{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,17,-1} 	// error
	
		   /*OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK*/
	};

	final private int noFinales[] = { -1, 0, 3, 4, 6, 7, 17, 18 }; // estados no finales
	
	public int transicion(int estado, int simbolo)
	{
		return tabla[simbolo][estado];
	} // calcula la transicion del automata

	public boolean esFinal(int estado) 
	{
		// devuelve si es final el estado que se introduce o no

		for (int i = 0; i < noFinales.length; i++) {

			if (estado == noFinales[i])
				return false;
		}

		return true;

	}// end Es_final

}// end Afd
